list-[id].vue 7.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195
  1. <template>
  2. <!-- 头部 -->
  3. <templateHead v-if="skinId<=4"></templateHead>
  4. <!-- 皮肤5头部 -->
  5. <templateHead5 v-if="skinId==5"></templateHead5>
  6. <!-- 皮肤6头部 -->
  7. <templateHead6 v-if="skinId==6"></templateHead6>
  8. <!-- 菜单 -->
  9. <templateMenu v-if="skinId<=4"></templateMenu>
  10. <!-- 皮肤5菜单 -->
  11. <templateMenu5 v-if="skinId>=5"></templateMenu5>
  12. <!-- 内容 -->
  13. <div v-for="(item,index) in templateData" :key="index">
  14. <!--广告组件-->
  15. <div v-if="item.sectorName=='adSector'">
  16. <templateAd :skinId="skinId" :adData="adData" :adTag="item.ad.ad_tag" ></templateAd>
  17. </div>
  18. <!--列表组件-->
  19. <div v-if="item.sectorName=='fixedListSector'">
  20. <templateList :skinId="skinId" :templateData="item.componentList" :routeId="routeId" :pageData="pageData" :newsList="newsList"></templateList>
  21. </div>
  22. <!-- 皮肤5列表组件 -->
  23. <div v-if="item.sectorName=='newsListSector' && skinId==5">
  24. <templateList5 :skinId="skinId" :templateData="item.componentList" :routeId="routeId" :pageData="pageData" :newsList="newsList1"></templateList5>
  25. </div>
  26. <!-- 皮肤6列表组件 -->
  27. <div v-if="item.sectorName=='ListbigSector' && skinId==6">
  28. <templateList6 :skinId="skinId" :templateData="item.componentList" :routeId="routeId" :pageData="pageData" :newsList="newsList1"></templateList6>
  29. </div>
  30. </div>
  31. <!-- 底部 -->
  32. <templateFoot v-if="skinId<=4"></templateFoot>
  33. <!-- 皮肤5底部 -->
  34. <templateFoot1 v-if="skinId>=5"></templateFoot1>
  35. </template>
  36. <script setup lang="ts">
  37. //0.加载全局模板组件 start---------------------------------------->
  38. import type { IListData } from '@/utils/dataInterface';
  39. //0.1全局通栏
  40. // 头部组件
  41. import templateHead from '@/components/template/sector/head/1200x200/1.vue'
  42. import templateHead5 from '@/components/template/sector/head/1200x250/1.vue'
  43. import templateHead6 from '@/components/template/sector/head/1200x250/6.vue'
  44. // 菜单组件
  45. import templateMenu from '@/components/template/sector/menu/1200x130/1.vue'
  46. import templateMenu5 from '@/components/template/sector/menu/1200x187/1.vue'
  47. // 底部组件
  48. import templateFoot from '@/components/template/sector/foot/1200x580/1.vue'
  49. import templateFoot1 from '@/components/template/sector/foot/1200x680/1.vue'
  50. //0.2局部通栏
  51. //0.2.1广告组件
  52. import templateAd from '@/components/template/sector/body/ad/1200x90/1.vue'
  53. //0.2.2列表组件
  54. import templateList from '@/components/template/sector/body/list/list/1200x1220/1.vue'
  55. import templateList5 from '@/components/template/sector/body/list/list/1200x2250/1.vue'
  56. import templateList6 from '@/components/template/sector/body/list/list/1200x1390/6/1.vue'
  57. //0.加载全局模板组件 end---------------------------------------->
  58. //1.获得基本信息单元 start---------------------------------------->
  59. //1.1获得页面依赖
  60. import { ref, onMounted } from 'vue';
  61. //1.2使用url查询导航池id
  62. const targetSegment = getRoutePath(1);//当前页面的url路径 这是第一层 所以获得域名后面的第一层url
  63. const routeId = ref<number>(0);//当前url路径代表的cid
  64. const getRouteId:any = await requestDataPromise('/web/getWebsiteRoute', {
  65. method: 'GET',
  66. query: {
  67. 'pinyin': targetSegment,
  68. },
  69. });
  70. if (getRouteId.code == 200) {
  71. routeId.value = getRouteId.data.category_id
  72. }
  73. //1.3获得pinia源
  74. import { useTemplateBaseStore } from '@/stores/templateBase'
  75. const templateBaseStore:any = useTemplateBaseStore()
  76. //1.4获得该页的皮肤id - 在每个组件中也是同样的获得方法
  77. const skinId = ref<number>(0)
  78. const websiteId = ref<number>(0)
  79. //1.5获得站点基本信息
  80. const responseStatus:any = await requestDataPromise('/web/getWebsiteAllinfo', {
  81. method: 'GET',
  82. query: {
  83. 'link_textnum':24,
  84. 'link_imgnum':18,
  85. 'link_footnum':4
  86. },
  87. });
  88. if (responseStatus.code == 200) {
  89. if(responseStatus.data.website_foot.foot_info.status == 1){
  90. //网站模板已停用,直接转入404页面
  91. navigateTo('/error?findPage=index')
  92. }else{
  93. //1.6.1设置站点基本信息
  94. templateBaseStore.setWebSiteInfo(responseStatus.data)
  95. websiteId.value = responseStatus.data.website_head.id;//获得网站id
  96. //1.6.2设置皮肤id
  97. skinId.value = templateBaseStore.webSiteInfo.website_foot.foot_info.template_id;
  98. }
  99. }
  100. //1.6.seo
  101. const setData = await requestDataPromise('/web/getWebsiteCategoryHead', {
  102. method: 'GET',
  103. query: {
  104. 'catid': routeId.value
  105. },
  106. });
  107. let seoTitle = setData.data.seo_title;
  108. let seoDescription = setData.data.seo_description;
  109. let seoKeywords = setData.data.seo_keywords;
  110. let seoSuffix = setData.data.suffix;
  111. let seoName = setData.data.website_name;
  112. useHead({
  113. title: seoTitle + "_" + seoName + "_" + seoSuffix,
  114. meta: [
  115. { name: 'keywords', content: seoKeywords + "_" + seoName + "_" + seoSuffix, tagPriority: 10 },
  116. { name: 'description', content: seoDescription + "_" + seoName + "_" + seoSuffix, tagPriority: 10 }
  117. ]
  118. });
  119. //1.获得基本信息单元 end---------------------------------------->
  120. //2.页面数据 start---------------------------------------->
  121. //2.1获得页面模板数据
  122. const response = await requestDataPromise('/client/indexData', {
  123. method: 'POST',
  124. body: {
  125. 'website_id':websiteId.value,
  126. 'getpage':'index'
  127. },
  128. });
  129. //页面模板数据
  130. const templateData = response.data.template.list;
  131. //是否启用搜索功能
  132. templateBaseStore.setIsSearch(response.data.isSearch)
  133. console.log(templateData)
  134. //2.2广告数据
  135. const adData = ref<any[]>([]);
  136. adData.value.push(response.data.ad.top)
  137. for(let item of response.data.ad.list){
  138. adData.value.push(item)
  139. }
  140. templateBaseStore.setAdList(adData.value)
  141. //2.3分页数据
  142. const route:any = useRoute();
  143. let pageNum = ref(1); //当前页码
  144. pageNum.value = parseInt(route.params.id);//路由中传递的分页页码
  145. let total = ref(0); //总条数
  146. let pageSize = ref(20); //每页条数
  147. //3.1新闻列表数据
  148. const newsList = ref<IListData[]>([]);
  149. let newslists = async () => {
  150. const listData = await requestDataPromise('/web/getWebsiteArticleList', {
  151. method: 'GET',
  152. query: {
  153. 'page': pageNum.value,
  154. 'pageSize': pageSize.value,
  155. 'catid': routeId.value
  156. },
  157. });
  158. console.log(listData)
  159. if (listData.code == 200) {
  160. newsList.value = listData.data.rows;
  161. pageData.value.total = listData.data.count;
  162. }
  163. }
  164. newslists();
  165. const newsList1 = ref<IListData[]>([]);
  166. let newslists1 = async () => {
  167. const listData = await requestDataPromise('/web/getWebsiteArticleList', {
  168. method: 'GET',
  169. query: {
  170. 'page': pageNum.value,
  171. 'pageSize': 10,
  172. 'catid': routeId.value
  173. },
  174. });
  175. console.log(listData)
  176. if (listData.code == 200) {
  177. newsList1.value = listData.data.rows;
  178. pageData.value.total = listData.data.count;
  179. }
  180. }
  181. newslists1();
  182. let pageData = ref({
  183. "pageNum": pageNum.value,
  184. "pageSize": pageSize.value,
  185. "total": total.value
  186. });
  187. //2.页面数据 end---------------------------------------->
  188. </script>
  189. <style lang="less" scoped>
  190. @import url('@/assets/css/list.less');
  191. </style>